4892e81ed482503284aca8e4632fff8288339fa9,jetty-util/src/test/java/org/eclipse/jetty/util/thread/QueuedThreadPoolTest.java,QueuedThreadPoolTest,testThreadPool,#,52
Before Change
assertEquals(5,tp.getIdleThreads());
Thread.sleep(1000);
assertEquals(5,tp.getThreads());
assertEquals(5,tp.getIdleThreads());
RunningJob job=new RunningJob();
tp.dispatch(job);
Thread.sleep(200);
assertEquals(5,tp.getThreads());
assertEquals(4,tp.getIdleThreads());
job._running=false;
Thread.sleep(200);
assertEquals(5,tp.getThreads());
assertEquals(5,tp.getIdleThreads());
RunningJob[] jobs = new RunningJob[5];
for (int i=0;i<jobs.length;i++)
{
jobs[i]=new RunningJob();
tp.dispatch(jobs[i]);
}
Thread.sleep(200);
assertEquals(5,tp.getThreads());
Thread.sleep(1000);
assertEquals(5,tp.getThreads());
job=new RunningJob();
tp.dispatch(job);
assertEquals(6,tp.getThreads());
job._running=false;
Thread.sleep(1000);
assertEquals(5,tp.getThreads());
jobs[0]._running=false;
Thread.sleep(1000);
assertEquals(5,tp.getThreads());
assertEquals(1,tp.getIdleThreads());
for (int i=1;i<jobs.length;i++)
jobs[i]._running=false;
Thread.sleep(1000);
assertEquals(5,tp.getThreads());
jobs = new RunningJob[15];
for (int i=0;i<jobs.length;i++)
{
jobs[i]=new RunningJob();
tp.dispatch(jobs[i]);
}
assertEquals(10,tp.getThreads());
Thread.sleep(100);
assertEquals(0,tp.getIdleThreads());
for (int i=0;i<9;i++)
jobs[i]._running=false;
After Change
RunningJob job=new RunningJob();
tp.dispatch(job);
waitForIdle(tp,4);
waitForThreads(tp,5);
job.stop();
waitForIdle(tp,5);
waitForThreads(tp,5);
Thread.sleep(200);
waitForIdle(tp,5);
waitForThreads(tp,5);
RunningJob[] jobs = new RunningJob[5];
for (int i=0;i<jobs.length;i++)
{
jobs[i]=new RunningJob();
tp.dispatch(jobs[i]);
}
waitForIdle(tp,0);
waitForThreads(tp,5);
job=new RunningJob();
tp.dispatch(job);
waitForThreads(tp,6);
job.stop();
waitForThreads(tp,5);
jobs[0].stop();
waitForIdle(tp,1);
waitForThreads(tp,5);
for (int i=1;i<jobs.length;i++)
jobs[i].stop();
waitForIdle(tp,5);
waitForThreads(tp,5);
jobs = new RunningJob[15];
for (int i=0;i<jobs.length;i++)
{
jobs[i]=new RunningJob();
tp.dispatch(jobs[i]);
}
waitForIdle(tp,0);
waitForThreads(tp,10);
for (int i=0;i<9;i++)
jobs[i].stop();
waitForThreads(tp,9);
for (int i=9;i<jobs.length;i++)
jobs[i].stop();